home *** CD-ROM | disk | FTP | other *** search
- global pickupSO, pickupData, playerViewpoint, playerLocData
-
- on initializePickups
- pickupData = []
- repeat with wPickup = 1 to 16
- wSprite = pickupSO + wPickup
- add(pickupData, [0, 0, 0, point(0, 0), point(0, 0), 0])
- puppetSprite(wSprite, 1)
- set the ink of sprite wSprite to 36
- sprite(wSprite).rotation = 0
- set the loc of sprite wSprite to point(-50, -50)
- sprite(wSprite).locZ = 198
- end repeat
- end
-
- on addPickup pickupType, pickupVariation, spawnPoint, rMomentum
- validSlot = 0
- repeat with wSlot = 1 to count(pickupData)
- if (pickupData[wSlot][1] = 0) and (validSlot = 0) then
- validSlot = wSlot
- end if
- end repeat
- if validSlot <> 0 then
- wSprite = pickupSO + validSlot
- pickupData[validSlot] = [1, pickupType, pickupVariation, spawnPoint, rMomentum, 400]
- sprite(wSprite).visible = 1
- end if
- end
-
- on movePickups
- global frameAnimate, playerInventory, playerHealth, frameSkip, updateTextFields, superPowers, rumbleOffset
- frameSkip = frameSkip + 1
- if frameSkip > 2 then
- frameSkip = 1
- end if
- if frameSkip = 1 then
- frameAnimate = frameAnimate + 1
- end if
- pbPoint = playerLocData[3]
- playerBodyRange = rect(pbPoint[1] - 25, pbPoint[2] - 50, pbPoint[1] + 25, pbPoint[2] + 50)
- repeat with wPickup = 1 to count(pickupData)
- wSprite = pickupSO + wPickup
- if pickupData[wPickup][1] = 1 then
- if (findDistance(pickupData[wPickup][4], pbPoint) < 50) and (playerLocData[1] = 1) then
- set the loc of sprite wSprite to point(-50, -50)
- pickupData[wPickup][1] = 0
- pType = pickupData[wPickup][2]
- case pickupData[wPickup][2] of
- 1:
- playerInventory[1] = playerInventory[1] + [1, 5, 0][pickupData[wPickup][3]]
- addScore([10, 50, 0][pickupData[wPickup][3]])
- if pickupData[wPickup][3] = 3 then
- if playerHealth < 3 then
- playerHealth = playerHealth + 1
- else
- addScore(300)
- end if
- playSound("Gain Heart SFX")
- else
- playSound("Get smiley Face SFX")
- end if
- updateCoinDisplay = 1
- 2:
- addScore(500)
- superPowers = 1
- playSound("Gain Heart SFX")
- end case
- next repeat
- end if
- pickupVar = pickupData[wPickup][3]
- case pickupData[wPickup][2] of
- 1:
- rpoint = point(random(40), random(40)) - 20
- if random(2) = 1 then
- addparticle(pickupData[wPickup][4] + rpoint, 0, 6)
- end if
- groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 18))
- celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 18))
- if groundCheck[1] = 1 then
- if pickupVar = 3 then
- pickupData[wPickup][5][2] = 0
- else
- pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 3 / 4)
- end if
- if groundCheck[2] = 2 then
- pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
- else
- if groundCheck[2] = 3 then
- pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
- end if
- end if
- else
- if celingCheck[1] = 1 then
- pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
- else
- pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
- if pickupData[wPickup][5][2] > 16 then
- pickupData[wPickup][5][2] = 16
- end if
- end if
- end if
- bounceCoins = 1
- pickupData[wPickup][5][1] = 0
- pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
- pickupData[wPickup][6] = pickupData[wPickup][6] - 1
- if pickupData[wPickup][6] > 150 then
- memNum = (frameAnimate mod 8) + 1
- if pickupVar = 3 then
- set the member of sprite wSprite to "Shroom"
- else
- set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
- end if
- set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
- pickupData[wPickup][6] = pickupData[wPickup][6] - 1
- else
- if pickupData[wPickup][6] > 0 then
- if (pickupData[wPickup][6] mod 3) = 0 then
- sprite(wSprite).visible = 0
- else
- sprite(wSprite).visible = 1
- end if
- memNum = (frameAnimate mod 8) + 1
- if frameSkip = 1 then
- if pickupVar = 3 then
- set the member of sprite wSprite to "Shroom"
- else
- set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
- end if
- end if
- set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
- pickupData[wPickup][6] = pickupData[wPickup][6] - 1
- else
- set the loc of sprite wSprite to point(-50, -50)
- sprite(wSprite).visible = 1
- pickupData[wPickup][1] = 0
- end if
- end if
- 2:
- set the member of sprite wSprite to ["Power Plant"][pickupVar]
- set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
- 3:
- groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 6))
- celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 12))
- if groundCheck[1] = 1 then
- pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 5 / 6)
- if groundCheck[2] = 2 then
- pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
- else
- if groundCheck[2] = 3 then
- pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
- end if
- end if
- else
- if celingCheck[1] = 1 then
- pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
- else
- pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
- if pickupData[wPickup][5][2] > 18 then
- pickupData[wPickup][5][2] = 18
- end if
- end if
- end if
- if checkSolidpoint(pickupData[wPickup][4] + point(12, 0))[1] = 1 then
- pickupData[wPickup][5][1] = 0 - abs(pickupData[wPickup][5][1])
- else
- if checkSolidpoint(pickupData[wPickup][4] - point(12, 0))[1] = 1 then
- pickupData[wPickup][5][1] = abs(pickupData[wPickup][5][1])
- end if
- end if
- if groundCheck[2] = 11 then
- if pickupData[wPickup][5][1] > 5 then
- pickupData[wPickup][5][1] = pickupData[wPickup][5][1] - 1
- else
- if pickupData[wPickup][5][1] < -5 then
- pickupData[wPickup][5][1] = pickupData[wPickup][5][1] + 1
- end if
- end if
- if pickupData[wPickup][5][2] > 3 then
- pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
- else
- if pickupData[wPickup][5][2] < -3 then
- pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
- end if
- end if
- pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
- end if
- pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
- pickupData[wPickup][6] = pickupData[wPickup][6] - 1
- bSpinType = [-3, -6, -9, 3, 6, 9][(wPickup mod 6) + 1]
- coreSpins = abs(500 - pickupData[wPickup][6]) * bSpinType
- set the member of sprite wSprite to ["Bone A", "Bone B", "Bone C", "Bone D", "Skull"][pickupVar]
- sprite(wSprite).rotation = coreSpins
- set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + point(25, 0) + rumbleOffset
- pickupData[wPickup][6] = pickupData[wPickup][6] - 1
- end case
- end if
- end repeat
- if updateTextFields = 1 then
- if updateCoinDisplay = 1 then
- member("Coin Display").text = string(playerInventory[1])
- end if
- end if
- end
-